package cn.doitedu.javase.calculate_engine.client;

import cn.doitedu.javase.calculate_engine.commons.SocketSender;
import cn.doitedu.javase.calculate_engine.commons.Utils;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

/**
 * @Author: 深似海
 * @Site: <a href="www.51doit.com">多易教育</a>
 * @QQ: 657270652
 * @Date: 2024/2/5
 * @Desc: 学大数据，上多易教育
 *   功能：
 *      1:可以选择随机生成数据
 *      2:也可以选择从控制台接收数据
 *
 *      然后，将数据发送给 "运算引擎 消费者"
 **/
public class Producer {
    public static void main(String[] args) throws Exception {

        // 构造工具对象
        Utils utils = new Utils();

        // 做启动参数的检查
        utils.mainParamCheck(args);

        // 构造网络连接
        Socket socket = new Socket("localhost", 9099);
        OutputStream socketOutputStream = socket.getOutputStream();

        // 构造一个网络数据发送工具
        SocketSender socketSender = new SocketSender(socketOutputStream);


        // 根据传入的参数，选择不同的数据生成方式
        if(args[0].equals("1")){
            // 循环
            while(true) {
                // 生成一条随机json
                String json = utils.generateRandomJson();

                // 用socket流发出去
                socketSender.send(json);

                // 控制发送速度
                Thread.sleep(500);
            }

        }else if(args[0].equals("2")){
            // 先开启工具的scanner功能
            utils.enableScanner();

            while(true) {
                // 从控制台收一条数据
                String json = utils.getJsonFromConsole();

                // 用socket流发出去
                socketSender.send(json);
            }

        }else{
            System.err.println("收到了一个不合法的参数： " + args[0]);
            System.exit(3);
        }

    }
}
